package models

import (
	"errors"
	"github.com/golang-module/carbon"
	"gorm.io/gorm"
)

// GinUser 用户模型
type GinUser struct {
	ID        uint            `gorm:"primaryKey" json:"id"`                                                      // 主键ID
	Username  string          `gorm:"type:varchar(255);not null;uniqueIndex" json:"username" binding:"required"` // 用户名
	Password  string          `gorm:"type:varchar(255);not null" json:"password" binding:"required"`             // 密码
	Nickname  string          `gorm:"type:varchar(255)" json:"nickname"`                                         // 昵称
	IsActive  int             `gorm:"type:tinyint(4);not null;default:1" json:"is_active"`                       // 状态 0冻结 1激活
	Mobile    string          `gorm:"type:int(11)" json:"mobile"`                                                // 手机号
	Role      int             `gorm:"type:tinyint(4);not null;default:0" json:"role"`                            // 角色
	Avatar    string          `gorm:"type:varchar(255)" json:"avatar"`                                           // 头像
	Address   string          `gorm:"type:varchar(255)" json:"address"`                                          // 地区
	CreatedAt carbon.DateTime `gorm:"autoCreateTime;type:datetime" json:"created_at"`                            // 创建时间
	UpdatedAt carbon.DateTime `gorm:"autoUpdateTime;type:datetime" json:"updated_at"`                            // 更新时间
}

func GetUserByUsername(username string) (*GinUser, error) {
	var user GinUser
	result := DB.Where("username = ?", username).First(&user)

	if errors.Is(result.Error, gorm.ErrRecordNotFound) {
		return nil, nil // 明确返回nil表示用户不存在
	}

	return &user, nil
}
